package models

import (
	"gorm.io/gorm"
)

// SysBanner 对应数据库表 sys_banner
/*
  `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '主键，自增ID',
  `title` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '标题',
  `src` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '图片地址',
  `jump_type` tinyint unsigned NOT NULL DEFAULT '0' COMMENT '跳转类型，0无跳转，1商品页面，2外部链接 3内部链接',
  `jump_link` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '跳转地址',
  `area` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT 'index' COMMENT '显示区域 index 首页 start app启动页 ',
  `sort` int unsigned DEFAULT '0' COMMENT '排序，数值越大权重越高',
  `status` tinyint unsigned NOT NULL DEFAULT '1' COMMENT '状态：2下线，1上线',
  `start_time` int DEFAULT '0' COMMENT '生效时间',
  `end_time` int DEFAULT '0' COMMENT '失效时间',
  `app_id` int(11) DEFAULT '0' COMMENT '数据归属',
*/
type SysBanner struct {
	gorm.Model
	ID        uint   `gorm:"primaryKey;autoIncrement;comment:主键，自增ID"`
	Title     string `gorm:"not null;default:'';comment:标题"`
	Src       string `gorm:"not null;default:'';comment:图片地址"`
	JumpType  string `gorm:"not null;default:'';comment:跳转类型 0无跳转，1商品页面，2外部链接 3内部链接"`
	JumpLink  string `gorm:"not null;default:'';comment:跳转链接"`
	Area      string `gorm:"not null;default:'';comment:区域 显示区域 index 首页,start app启动页"`
	Sort      int    `gorm:"not null;default:0;comment:排序"`
	Status    uint8  `gorm:"not null;default:1;comment:0状态：2禁用，1正常"`
	StartTime int64  `gorm:"default:0;comment:启用时间戳"`
	EndTime   int64  `gorm:"default:0;comment:失效时间戳"`
	AppID     int    `gorm:"default:0;comment:数据归属"`
	CreatedAt int64  `gorm:"autoCreateTime;comment:创建时间戳"` // 修改为 int64 类型
	UpdatedAt int64  `gorm:"autoUpdateTime;comment:更新时间戳"` // 修改为 int64 类型
}

type SysBannerList struct {
	ID        uint   `json:"id"`
	Title     string `json:"title"`
	Src       string `json:"src"`
	JumpType  string `json:"jump_type"`
	JumpLink  string `json:"jump_link"`
	Area      string `json:"area"`
	Sort      int    `json:"sort"`
	Status    uint8  `json:"status"`
	StartTime string `json:"start_time"`
	EndTime   string `json:"end_time"`
	AppID     int    `json:"app_id"`
	CreatedAt string `json:"created_at"`
	UpdatedAt string `json:"updated_at"`
}

type SysBannerCreate struct {
	Title     string `json:"title"`
	Src       string `json:"src"`
	JumpType  string `json:"jump_type"`
	JumpLink  string `json:"jump_link"`
	Area      string `json:"area"`
	Sort      int    `json:"sort"`
	Status    uint8  `json:"status"`
	StartTime string `json:"start_time"`
	EndTime   string `json:"end_time"`
	AppID     int    `json:"app_id"`
}

type SysBannerUpdate struct {
	ID        uint   `json:"id"`
	Title     string `json:"title"`
	Src       string `json:"src"`
	JumpType  string `json:"jump_type"`
	JumpLink  string `json:"jump_link"`
	Area      string `json:"area"`
	Sort      int    `json:"sort"`
	Status    uint8  `json:"status"`
	StartTime string `json:"start_time"`
	EndTime   string `json:"end_time"`
	AppID     int    `json:"app_id"`
}

// TableName 设置表名为 sys_banner
func (SysBanner) TableName() string {
	return "sys_banner"
}
